# 给你一个栈，请你逆序这个栈，不能申请额外的数据结构，只能使用递归函数。 如何实现?
# 注释见图片 reverse_stack.png


def reverse_stack(stack: list):
    if not stack:
        return
    item = get_and_remove_last(stack)
    reverse_stack(stack)
    stack.append(item)


def get_and_remove_last(stack: list):
    item = stack.pop()
    if not stack:
        return item
    else:
        last = get_and_remove_last(stack)
        stack.append(item)
        return last


if __name__ == "__main__":
    stack = []
    stack.append(1)
    stack.append(2)
    stack.append(3)
    reverse_stack(stack)
    print(stack)